package org.dromara.common.core.utils;

import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.constant.NetbarConstants;

import java.util.Set;
import java.util.stream.Collectors;

/**
 * @author ZhouWenTao
 * @create 2025-07-21 17:32
 */
public class RedisKeyGeneratorUtils {
    // *卡券 start====================================================
    /**
     * 会员-使用卡券Key
     * @param tenantId 租户ID
     */
    public static String getMemberUseCouponKey(String tenantId) {
        return tenantId + NetbarConstants.ONLINE_MEMBER_USE_COUPON_KEY;
    }

    public static Set<String> getMemberUseCouponHKeys(Long memberId) {
        return NetbarConstants.REDIS_COUPON_TYPES.stream()
            .map(type -> memberId + "_" + type)
            .collect(Collectors.toSet());
    }

    public static String getMemberUseCouponHKey(Long memberId,String couponType) {
        return memberId + "_" + couponType;
    }
    // *卡券 end======================================================

    // *会员 start====================================================
    /**
     * 会员-在线信息 Key
     * @param tenantId 租户ID
     */
    public static String getOnlineMemberKey(String tenantId) {
        return tenantId + NetbarConstants.ONLINE_MEMBER_KEY;
    }

    // *会员 end======================================================

    // *会员等级 start====================================================

    public static String getMemberLevelKey(String tenantId) {
        return tenantId + NetbarConstants.MEMBER_LEVEL_ONE_KEY;
    }

    public static String getMemberLevelOneKey(String tenantId, Long memberLevelId) {
        return tenantId + NetbarConstants.MEMBER_LEVEL_ONE_KEY+":" + memberLevelId;
    }
    // *会员等级 end======================================================
    // * 座位 start====================================================
    public static String getOnlineClientKey(String tenantId){
        return tenantId + NetbarConstants.ONLINE_CLIENT_KEY;
}

    // 座位类型缓存
    public static String getSeatTypesKey(String tenantId){
        return tenantId + NetbarConstants.NETBAR_SEAT_TYPE_HEAD_KEY;
    }

    // * 座位 end======================================================
}
